home *** CD-ROM | disk | FTP | other *** search
/ Programming Languages Suite / ProgramD2.iso / Borland / Borland C++ V5.02 / CLOBSH.PAK / CONTAIN.H < prev    next >
C/C++ Source or Header  |  1997-05-06  |  3KB  |  104 lines

  1. /*------------------------------------------------------------------------*/
  2. /*                                                                        */
  3. /*  CONTAIN.H                                                             */
  4. /*                                                                        */
  5. /*  Copyright Borland International 1991, 1993                            */
  6. /*  All Rights Reserved                                                   */
  7. /*                                                                        */
  8. /*------------------------------------------------------------------------*/
  9.  
  10. #if !defined( __CONTAIN_H )
  11. #define __CONTAIN_H
  12.  
  13. #define BI_OLDNAMES
  14.  
  15. #if !defined( __CLSTYPES_H )
  16. #include "classlib\obsolete\ClsTypes.h"
  17. #endif  // __CLSTYPES_H
  18.  
  19. #if !defined( __OBJECT_H )
  20. #include "classlib\obsolete\Object.h"
  21. #endif  // __OBJECT_H
  22.  
  23. #if !defined( __SHDDEL_H )
  24. #include "classlib\ShdDel.h"
  25. #endif  // __SHDDEL_H
  26.  
  27. #pragma option -Vo-
  28. #if defined( __BCOPT__ ) && !defined( __FLAT__ ) && !defined( _ALLOW_po )
  29. #pragma option -po-
  30. #endif
  31.  
  32. _CLASSDEF(ostream)
  33. _CLASSDEF(ContainerIterator)
  34. _CLASSDEF(Container)
  35.  
  36. class _CLASSTYPE Container :
  37.     public Object,
  38.     public virtual Object::TShouldDelete
  39. {
  40.  
  41. public:
  42.  
  43.     Container() : itemsInContainer(0) {}
  44.  
  45.     virtual void flush( DeleteType = DefDelete ) = 0;
  46.  
  47.     virtual int isEmpty() const
  48.         {
  49.         return itemsInContainer == 0;
  50.         }
  51.  
  52.     virtual countType getItemsInContainer() const
  53.         {
  54.         return itemsInContainer;
  55.         }
  56.  
  57.     virtual void forEach( iterFuncType, void _FAR * );
  58.     virtual Object _FAR & firstThat( condFuncType, void _FAR * ) const;
  59.     virtual Object _FAR & lastThat( condFuncType, void _FAR * ) const;
  60.  
  61.     virtual classType isA() const = 0;
  62.     virtual _TCHAR _FAR *nameOf() const = 0;
  63.     virtual hashValueType hashValue() const;
  64.     virtual int isEqual( const Object& ) const;
  65.  
  66.     virtual void printOn( ostream& ) const;
  67.     virtual void printHeader( ostream& ) const;
  68.     virtual void printSeparator( ostream& ) const;
  69.     virtual void printTrailer( ostream& ) const;
  70.  
  71.     virtual ContainerIterator _FAR & initIterator() const = 0;
  72.  
  73.     friend class ContainerIterator;
  74.  
  75. protected:
  76.  
  77.     unsigned itemsInContainer;
  78.  
  79. };
  80.  
  81. class _CLASSTYPE ContainerIterator
  82. {
  83.  
  84. public:
  85.  
  86.     virtual ~ContainerIterator()
  87.     {
  88.     }
  89.  
  90.     virtual operator int() = 0;
  91.     virtual Object _FAR & current() = 0;
  92.     virtual Object _FAR & operator ++ ( int ) = 0;
  93.     virtual Object _FAR & operator ++ () = 0;
  94.     virtual void restart() = 0;
  95.  
  96. };
  97.  
  98. #if defined( __BCOPT__ ) && !defined( __FLAT__ ) && !defined( _ALLOW_po )
  99. #pragma option -po.
  100. #endif
  101. #pragma option -Vo.
  102.  
  103. #endif
  104.